package org.tity.sql.code;



import java.io.File;

import org.tity.backends.system.data.codebuilder.ModuleClassCodeBuilder;
import org.tity.sql.code.entity.test.RelationTity;
import org.tity.sql.code.entity.test.TestNewsTity;
import org.tity.sql.dao.DAO;
import org.tity.sql.entity.Entity;
import org.tity.sql.entity.EntityStructure;

/**
 *  构建业务模块，该文件在项目组中建议一人一文件，避免代码被他人覆盖！！！
 * */
public class ModuleCodeBuilder {

	/**
	 * 开发人员
	 * */
    public static final String AUTHOR = "李方捷";
    /**
     * 模块所在的包
     * */
    public static final String BASE_PACKAGE = "org.tity.sql.code.modules";
    /**
     * 模块所在的源文件目录
     * */
    public static final String SOURCE_DIR = "src";
    /**
     * 控制器URL前缀
     * */
    public static final String BASE_REST_URL="/modules";
    
    /**
     * 共享变量
     * */
    public static String BASE_PATH = null;



    public static void main(String[] args) {


        initialize();
 
        //生成用户接口模块代码
//        builder = createClassCodeBuilder(SysUser.class, DAO.class,"用户接口");
//        // useListAPIs()  表示使用列表特性API；allFeature() 表示使用全部列表API特性
//        builder.useListAPIs().allFeature();
//        builder.build(true, true);
        
        //生成部门管理接口代码
        builder = createClassCodeBuilder (RelationTity.class , DAO.class,"关系管理");
        // useTreeAPIs()  表示使用树形特性API；allFeature() 表示使用全部树形API特性
        builder.useListAPIs().allFeature();
        builder.build(true, true);
        
        //生成部门管理接口代码
        builder = createClassCodeBuilder (TestNewsTity.class , DAO.class,"新闻模块");
        // useTreeAPIs()  表示使用树形特性API；allFeature() 表示使用全部树形API特性
        builder.useListAPIs().allFeature();
        builder.build(true, true);
 
    }


    public static ModuleClassCodeBuilder createClassCodeBuilder(Class<? extends Entity> entityType, Class<? extends DAO> daoType, String moduleName) {
        String name=entityType.getSimpleName().toLowerCase();
        EntityStructure jp=EntityStructure.get(entityType);
        return new ModuleClassCodeBuilder(entityType, daoType,BASE_PATH + "/" + name, BASE_PACKAGE + "." + name, AUTHOR)
                .api(BASE_REST_URL+"/"+name, moduleName, jp.getTableDesc());
    }

    private static ModuleClassCodeBuilder builder = null;


    private static void initialize () {
    	BASE_PATH = getEntityFileDir().getAbsolutePath();
    }

    public static org.tity.commons.io.EasyFile getEntityFileDir() {
        org.tity.commons.io.EasyFile dir = new org.tity.commons.io.EasyFile(new File("."));
        dir = dir.resolve(SOURCE_DIR).resolve(BASE_PACKAGE.replace('.','/'));
        return dir;
    }

}
